perm filename RDTAP.PAL[ETH,REG] blob sn#211379 filedate 1980-03-16 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00002 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	.TITLE RDTAP READ DECTAPE BLOCK ZERO
C00007 ENDMK
C⊗;
.TITLE RDTAP READ DECTAPE BLOCK ZERO

R0=%0
R1=%1
R2=%2
R3=%3
R4=%4
R5=%5
SP=%6
PC=%7

RCSR==177560
RDB==177562
TCSR==177564
TDB==177566

;TC11 REGISTERS
TCST=177340
TCCM=177342
TCWC=177344
TCBA=177346
TCDT=177350

;DTE20 REGISTERS
DEXWD1=174406		;BITS 0-3 IN 3-0
DEXWD2=174404		;BITS 4-19
DEXWD3=174402		;BITS 20-35
TENAD1=174410		;15-13=ADR SPACE, 12=DEP, 11=UNPROT, 6-0=ADDR BITS 13-19

; CNT2 PROTECTION OFF (1) is cleared by CNT4 DEX DONE although the corresponding
; bit in the RAM location remains set.

TENAD2=174412		;BITS 20-35
STATUS=174434		;BII 2 IS ON FOR DEX DONE

.MACR TYPEIT STR
	JSR R5,TYPE
.IRPC X,STR
	.BYTE ''X
.ENDM
	.BYTE 0
	.EVEN
.ENDM

.=100000
.=.+200
PDL:

GO:	RESET
	MOV #PDL,SP
	MOV #5,R0		;COMMAND FOR TCCM:DRIVE=0,RDATA,FORWARD,DO
	MOV #-400,R2		;SET UP WORD COUNT REGISTER
	MOV #4003,R3		;COMMAND FOR TCCM:DRIVE=0,RNUM,REVERSE,DO

;START RUNNING THE TC11 DECTAPE DRIVE
SPIN:	RESET			;CAUSES TCBA TO BE SET TO ZERO
;	MOV #BUF,TCBA
	MOV R3,TCCM		;START SPINNING BACKWARDS READING BLOCK NUMS
SPINL1:	TST TCCM		;WAIT FOR AN ERROR (SHOULD RUN INTO THE
	BPL SPINL1		; FRONT END ZONE EVENTUALLY)
	TST TCST		;LOOK AT END ZONE BIT IN TCST
	BPL SPIN		;IF IT IS OFF TRY AGAIN (GOT SOME OTHER ERROR)
COMMENT ⊗
	MOV R2,TCWC   		;STORE WORD COUNT IN TCWC
	MOV R0,TCCM   		;READ FORWARD CMD
SPINL2:	TSTB TCCM		;WAIT FOR READY
	BPL SPINL2
	TST TCCM		;TEST ERROR BIT
	BMI SPIN		;BRANCH ON ERROR
	CLRB TCCM		;CLEAR FUNCTION, DO, INT ENB
⊗
RDL2:	MOV #3,@#TCCM
RDL3:	TST @#TCCM
	BMI SPIN
	TSTB @#TCCM
	BPL RDL3
	CMP @#TCDT,#30
	BLO RDL2
	BHI SPIN
	MOV #-14400,@#TCWC
	MOV #BUF,@#TCBA
	MOV #5,@#TCCM
RDL4:	TST @#TCCM
	BMI SPIN
	TSTB @#TCCM
	BPL RDL4

	MOV #114006,R0		;PHY ADR, DEP, UNPROT, MA 13-19 = 6
	CLR R1			;ADDRESS FOR TENAD2
	MOV #BUF,R2
	MOV #6200,R3		;NUMBER OF DEPOSITS
DEPLUP:	MOV (R2)+,DEXWD3
	MOV (R2)+,R4
	MOV R4,R5
	ASL R4
	ASL R4
	MOV R4,DEXWD2
	ROL R5
	ROL R5
	ROL R5
	BIC #177774,R5
	MOV R5,DEXWD1
	MOV R0,TENAD1
	MOV R1,TENAD2
	NOP
	NOP
DEPWAI:	BIT #4,STATUS
	BEQ DEPWAI
	INC R1
	SOB R3,DEPLUP
	TYPEIT <DONE>
	JMP 56000

;TYO, TYO00

;TYPE CHARACTER IN R0.  IGNORE 1S
TYO:	BIC #177600,R0		;FLUSH PARITY BIT
	BEQ TYORET		;TYPE NULLS (PADDING) IF VT05
	CMPB R0,#40
	BHIS TYOTYP		;TYPE BIGGER THAN 40 AS IS
	CMPB R0,#10
	BEQ TYOTYP		;TYPE BACKSPACE
	CMPB R0,#11
	BEQ TYOTYP		;TYPE TABS
	CMPB R0,#33
	BEQ TYOALT		;TYPE $ FOR ALT MODE
	CMP R0,#12
	BEQ TYOTYP
	CMP R0,#15
	BEQ TYOTYP
	MOV R0,-(SP)
	MOV #'↑,R0
	JSR PC,TYOTYP
	MOV (SP)+,R0
	BIS #100,R0
	JSR PC,TYOTYP
	BIC #100,R0
	BR TYORET
TYOTYP:	TSTB TCSR
	BPL .-4
	MOVB R0,TDB
TYORET:	RTS PC

TYOALT:	MOV #'$,R0
	JSR PC,TYOTYP
	MOV #33,R0
	RTS PC

;CALL WITH JSR R5,TYPE FOLLOWED BY BYTES OF ASCII TO BE TYPED FOLLOWED BY ZERO BYTE

TYPE0:	JSR PC,TYO
TYPE:	MOVB (R5)+,R0
	BNE TYPE0
	INC R5			;INCREMENT TO NEXT EVEN ADDRESS
	BIC #1,R5
	RTS R5

BUF:	.BLKW 400
.END	GO